package com.victor.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.victor.entity.AdminToMenuOne;
import com.victor.entity.AdminToMenuTwo;
import com.victor.entity.Administrator;
import com.victor.entity.MenuOne;
import com.victor.entity.MenuTwo;
import com.victor.entity.step.Schedule;
import com.victor.entity.step.StepDetails;

public interface AdministratorService {
	/**
	 * 添加一级菜单
	 * @param one
	 * @return
	 */
	boolean insertOne(MenuOne one);
	/**
	 * 添加二级
	 * @param menuTwo
	 * @return
	 */
	boolean insertTwo(MenuTwo menuTwo);
	/**
	 * 修改一级菜单
	 * @param menuOne
	 * @return
	 */
	boolean updateOne(MenuOne menuOne);
	/**
	 * 修改二级菜单
	 * @param menuTwo
	 * @return
	 */
	Boolean updateTwo(MenuTwo menuTwo);
	/**
	 * 删除一级菜单
	 * @param id
	 * @return
	 */
	boolean deleteOne(int[] id);
	/**
	 * 删除二级菜单
	 * @param id
	 * @return
	 */
	boolean deleteTwo(int[] id);
	/**
	 * 查询菜单
	 * @return
	 */
	PageInfo<MenuOne> getMenu(int page,int row);
	/**
	 * 新增管理员
	 * @param administrator
	 * @return
	 */
	boolean insert(Administrator administrator);
	/**
	 * 添加管理员一级菜单
	 * @param adminToMenuOne
	 * @return
	 */
	boolean insertAdminMenuOne(AdminToMenuOne adminToMenuOne);
	/**
	 * 添加管理员二级菜单
	 * @param adminToMenuTwo
	 * @return
	 */
	boolean  insertAdminMenuTwo(AdminToMenuTwo adminToMenuTwo);
	/**
	 * 删除管理员一级菜单 二级菜单
	 * @param admin_id
	 * @return
	 */
	boolean deleteMenuOneTwo(String admin_id);
	/**
	 * 
	 * @param admin_id
	 * @return
	 */
	List<AdminToMenuOne> getByAdminId(String admin_id);
	/**
	 * 修改管理员
	 * @param administrator
	 * @return
	 */
	boolean updateAdministrator(Administrator administrator);
	/**
	 * 删除管理员
	 * @param ids
	 * @return
	 */
	boolean delAdministrator(int[] ids);

	/**
	 * 	查询审批流程是否用的此员工	
	 * @param id 员工id
	 * @return
	 */
	List<StepDetails> selectStepDetails(String id);

	/**
	 * 	删除此员工工作流程
	 * @param sd_id
	 * @return
	 */
	boolean delstepDetails(Integer sd_id);

	/**
	 * 	查询此模板下所有流程表
	 * @param s_id
	 * @return
	 */
	List<StepDetails> selectStepDetailsByS_id(Integer s_id,Integer position);

	/**
	 * 	修改其后全部流程向前挪动一位
	 * @param sd_id
	 * @return
	 */
	boolean updatePosition(Integer sd_id,Integer position);

	/**
	 * 	查询审批进度中是否用到此员工
	 * @param id 审批人id
	 * @return
	 */
	List<Schedule> selectSchedules(String id);

	/**
	 * 	删除员工审核进度
	 * @param id
	 * @return
	 */
	boolean delSchedules(Integer id);

	/**
	 * 	查询改模板下所有审核进度
	 */
	List<Schedule> selectScheduleByS_id(String s_id,Integer sp_sequence);

	/**
	 * 	修改审核进度
	 * @return
	 */
	boolean updateScheduleById(Schedule schedule);
	
	/**
	 * 查询管理员详情
	 * @param adminId
	 * @return
	 */
	Administrator getAdminById(Administrator administrator);
	/**
	 * 查询全部管理员
	 * @param page
	 * @param row
	 * @return
	 */
	PageInfo<Administrator> getAllAdmin(Integer page, Integer row);
	/**
	 * 查询全部
	 * @return
	 */
	List<Administrator> getAll();
	/**
	 * 搜索
	 * @param search
	 * @return
	 */
	List<Administrator> selBySearch(String search);
	/**
	 * 时间搜索
	 * @param start
	 * @param end
	 * @param page
	 * @param row
	 * @return
	 */
	PageInfo<Administrator> selByTime(String start, String end, int page, int row);
	/**
	 * 根据openid查找
	 * @param openId
	 * @return
	 */
	Administrator findByOpenid(String openId);
	/**
	 * 删除管理员二级菜单
	 * @param admin_id
	 * @param menuoneid
	 * @return
	 */
	boolean delMenuTwo(String admin_id, String menuoneid);
	/**
	 * 根据电话号查询管理员
	 * @param phone
	 * @return
	 */
	Administrator selByPhone(String a_username);

}
